টেনসরের সাথে মেট্রিক্স অপারেশন (Matrix Multiplication, Transpose)

PyTorch টেনসর ম্যানিপুলেশন - পাইটর্চ (Pytorch) - Machine Learning

402

টেনসর হলো এক ধরনের ডেটা স্ট্রাকচার যা মেশিন লার্নিং ও ডিপ লার্নিং মডেল তৈরির জন্য ব্যবহৃত হয়। এটি সাধারণত ন-মাত্রিক অ্যারে (n-dimensional array) হিসেবে কাজ করে এবং মেশিন লার্নিং অ্যাপ্লিকেশনে বিভিন্ন ধরনের গণনা করার জন্য ব্যবহার করা হয়। মেট্রিক্স অপারেশন যেমন Matrix Multiplication এবং Transpose টেনসরের উপর কাজ করার ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ। নিচে এই অপারেশনগুলো কিভাবে কাজ করে তা বিস্তারিতভাবে আলোচনা করা হলো।


১. Matrix Multiplication (মেট্রিক্স গুণফল)

মেট্রিক্স গুণফল হলো দুটি মেট্রিক্সের মধ্যে গুণফল করার একটি অপারেশন। এটি সাধারণত টেনসর অ্যালজেব্রায় ব্যবহৃত হয়, বিশেষত নিউরাল নেটওয়ার্ক মডেল ট্রেনিংয়ের সময়।

মেট্রিক্স গুণফল (Matrix Multiplication):

ধরা যাক, আমাদের কাছে দুটি মেট্রিক্স A এবং B রয়েছে, যেখানে:

  • A এর আকার হচ্ছে (m, n) (m টি সারি এবং n টি কলাম),
  • B এর আকার হচ্ছে (n, p) (n টি সারি এবং p টি কলাম),

তাহলে A এবং B মেট্রিক্সের গুণফল হবে একটি নতুন মেট্রিক্স C, যার আকার হবে (m, p)

মেট্রিক্স গুণফলের সূত্র হলো:

C(i,j)=k=1nA(i,k)×B(k,j)C(i, j) = \sum_{k=1}^{n} A(i, k) \times B(k, j)

এটি বলতে চাচ্ছি যে, C এর প্রতিটি উপাদান হল A এর সারি এবং B এর কলামের উপাদানগুলোর গুণফল এবং তারপর যোগফল।

PyTorch এ Matrix Multiplication:

PyTorch এ মেট্রিক্স গুণফল করতে torch.mm() বা @ অপারেটর ব্যবহার করা হয়।

import torch

# দুটি মেট্রিক্স তৈরি করা
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])

# মেট্রিক্স গুণফল
C = torch.mm(A, B)

print(C)

এছাড়া, আপনি @ অপারেটরও ব্যবহার করতে পারেন:

C = A @ B
print(C)

আউটপুট:

tensor([[19, 22],
        [43, 50]])

এখানে, A এবং B মেট্রিক্সের গুণফল C হয়েছে।


২. Transpose (ট্রান্সপোজ)

Transpose হলো একটি মেট্রিক্স অপারেশন যেখানে মেট্রিক্সের সারি এবং কলাম একে অপরের মধ্যে পরিণত হয়। অর্থাৎ, মেট্রিক্সের সারি হয়ে যায় কলাম এবং কলাম হয়ে যায় সারি।

ধরা যাক, একটি মেট্রিক্স A এর আকার (m, n)। তখন A এর ট্রান্সপোজ A^T এর আকার হবে (n, m)

Transpose এর সূত্র:

AT(i,j)=A(j,i)A^T(i, j) = A(j, i)

অর্থাৎ, A এর i-তম সারির j-তম উপাদান A^T এর j-তম সারির i-তম কলামে চলে যাবে।

PyTorch এ Transpose:

PyTorch এ ট্রান্সপোজ অপারেশন করতে torch.transpose() বা .T ব্যবহার করা হয়।

import torch

# একটি মেট্রিক্স তৈরি করা
A = torch.tensor([[1, 2], [3, 4]])

# ট্রান্সপোজ করা
A_T = A.transpose(0, 1)

# অথবা
A_T = A.T

print(A_T)

আউটপুট:

tensor([[1, 3],
        [2, 4]])

এখানে, A মেট্রিক্সের ট্রান্সপোজ A_T হয়েছে, যেখানে সারি এবং কলাম পরিবর্তিত হয়েছে।


৩. Matrix Multiplication এবং Transpose একসাথে ব্যবহার

মেট্রিক্স গুণফল এবং ট্রান্সপোজ অপারেশন একসাথে ব্যবহার করা অনেক গুরুত্বপূর্ণ। উদাহরণস্বরূপ, (A^T) * B বা A * (B^T) মত কেসে এগুলো একসাথে ব্যবহৃত হতে পারে।

import torch

# দুটি মেট্রিক্স তৈরি করা
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])

# A এর ট্রান্সপোজের সাথে B এর গুণফল
result = torch.mm(A.transpose(0, 1), B)

print(result)

আউটপুট:

tensor([[23, 28],
        [34, 42]])

এখানে, প্রথমে A এর ট্রান্সপোজ নেয়া হয়েছে, তারপর তা B এর সাথে গুণফল করা হয়েছে।


সারাংশ

  • Matrix Multiplication: মেট্রিক্স গুণফল হলো দুটি মেট্রিক্সের উপাদানগুলোর গুণফল এবং যোগফল করার প্রক্রিয়া। PyTorch এ এটি torch.mm() বা @ অপারেটর ব্যবহার করে করা হয়।
  • Transpose: মেট্রিক্স ট্রান্সপোজ হল একটি অপারেশন যেখানে মেট্রিক্সের সারি এবং কলাম পরিবর্তিত হয়। PyTorch এ এটি torch.transpose() বা .T ব্যবহার করে করা হয়।

এটি সাধারণত ডিপ লার্নিং মডেল এবং ডেটা প্রসেসিংয়ে ব্যবহৃত হয়। PyTorch ব্যবহার করে আপনি সহজেই এই অপারেশনগুলো বাস্তবায়ন করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...